<?php

defined('NABU') || exit;

session_start();

require_once 'core/config.php';
require_once 'libs/messages.php';

$messages   = new nabu\libs\messages\messages();
$components = require_once 'core/routes.php';

// Genera la URL completa de todas las rutas.
foreach ($components as $alias => $component)
  $routes[$alias] = NABU_URL . '/index.php?view=' . $component['route'];

define('NABU_ROUTES', $routes);

// Selecciona el controlador y la vista de una ruta solicitada.
if (!empty($_GET['view']))
  foreach ($components as $alias => $component)
    if ($component['route'] == $_GET['view']) {
      $controller = $component['controller'];
      $view       = $component['view'];
    }

unset($components, $routes);

// Redirecciona a la página web principal si la ruta no existe o no es válida.
if (empty($controller) || empty($view))
  $messages -> redirect(NABU_ROUTES['home']);

require_once 'controllers/' . $controller . '.php';

// Construye el 'namespace' del controlador.
$controller = "nabu\\controllers\\" . $controller . "\\" . $controller;

// Renderiza la vista de una página web.
$controller::$view();
